- BACKNUMBERS -
2024年 5月分
2024年 6月分
2024年 7月分
2024年 8月分
2024年 9月分
2024年 10月分
2024年 11月分
2024年 12月分
2025年 1月分
2025年 2月分
最新月

web6047 - 2025年 2月

私がプログラミングを好きなのは、探求心創造性を満たしてくれるからです。

会話 AI の Gemini との会話にて

- Special Documents -

特別な記事へのリンク

▼3DCG プログラミングの方法
▼書籍「はじめて読む486」の
サンプル動作環境の作成方法
▼3Dお姉さんによるプログラミング解説
▼RPG のルーツ(PDF)

ゲームコーナー 

▼クレイジーバルーン
(↑, ↓, ←, →)
▼テトリス
(←, →, ↓, x, y)

その他 単発のアプリ

▼矩形波は複数の波形の合成です

- 以降は日記です -

2025年2月14日

生活 最近やっていること

買い物、映画やアニメ、プログラミング。

買い物

キッチンのガステーブルをやめて、IH にしました。

ガステーブルだと年に1,2回ぐらい、ふと気づくと弱火がつけっぱなしになっていた、ということがあるからです。

歳をとったのでこれからそういうこともさらに多くなり、火災の恐れがあると思って。

でも、生魚はフライパンだとフライパンの面に接している部分だけが焦げ付く感じになってしまいます。

ガステーブルのロースター部分なら全体がまんべんなく焼けていい感じになるので、生魚のみガステーブルを使っています。

しかしそれだと結局同じなので、考えないといけません。

映画やアニメ
映画「World War Z」

もう何度も観ましたが、また観ました。

最近はこういうしっかりと作りこまれた映画が少ない気がします。

★4.5

映画「トップガン - マーヴェリック」

これも 3 回目くらいになりますが、また観ました。

★4.5

アニメ「東京喰種」

個人的には「とうきょう・くいだね」と呼んでます。正しくは「とうきょう・グール」です。

無料再放送は終わってしまったので、また別の無料アニメを探さないと…。

プログラミング

…については、ページの都合でカテゴリ分けしたいので、見出しを1つ大きくします。

構文解析 プログラミング

今年の 1 月 12 日に何となく気が向いて「構文解析」のプログラムを作り始めました。

つきっきりで現在 1 カ月経ったところです。

適当に作るならある程度のものはすぐに作れると思いますが、きちんとした完璧なものを作ろうとしているせいか、とても難しく、時間がかかっています。

仕様:
  1. プログラムが書かれたテキスト(ソースコード)を受け取り、以下の 2. ~ 8. 番の処理を行い、整頓された正確な階層構造を返す構文解析関数であること。つまり、

    object = koubunKaiseki( sourceCode );
    ができるものであること。
  2. //~\n と、/*~*/、"~"、'~'、そして正規表現の /~/ は、そこに何が書いてあっても以下の 3. ~ 8. の各処理は対象外なので、最初に階層化するなど処理してしまう。
  3. (), [], {} は階層として扱う。
  4. if, while, for などの制御文は条件部分の (条件) と、その後に 単文か、ブロックが必ず続く。
    制御文に続く単文、たとえば

    if( a ) alert( 1 );
    は、ブロックの中に 1 文ある状態

    if( a ) { alert( 1 ); }
    と等しいと考えられる。
  5. if は else if や else が続く場合がある。そのほか、try{} catch() {} も finally{} が続く場合がある。
  6. 部分プログラムとその周囲のコメントの位置関係を後追い可能であること。
    (プログラムのどこについてのコメントなのかを追跡しやすい)
  7. 以上を抽象的に扱うことで、複数のプログラミング言語に対応できること。
  8. HTML 内の JavaScript のように、複数の言語が混在することが可能であること。

以上の仕様を満たした、「シンプルな単一の関数」とはどんな関数か?を追及しています。


歳を取ったせいか、上記の無駄にビックリ赤く示した部分についてひどく悩みました。

「単文かブロックがそこに来る」

ブロックは {} を検知すればいいで、判別しやすいかもしれません。

でも単文は、アルファベットや数字、() であったり、いろいろ来る可能性があります。

簡単そうではあるけど、理路整然とした納得のいくロジックにするためにどう書くべきかが難しいです。

たとえば、

if( A ) if( B ) test4(); else test5(); else test6();

このピンクで示した部分が、if( A ) にとっての単文なんですよね。

いったいどうやって見分けるのか?


何となく気が向いて、、で始めましたが、こんなに泥沼になるとは思いませんでした。

しかし、

  1. この構文解析を行うと、
  2. プログラムから自動的にフローチャートを生成するアイデアの実現につながり、
  3. それがプログラムの内容を一瞬で把握できるツールとなり、
  4. 私のプログラミングの取り組みを加速させることにつながる(生産性が高まる)

… ので、価値があるのであきらめるのはもったいないです。

泥沼の中をゆっくりと根気よく理性的に考えて、そして泥沼とはいえプログラミングには違いないのでそれを楽しみつつ進めば、かならず道は拓ける(ひらける)ので、進むわけです。

そのようにジリジリと進めたおかげで、1カ月過ぎたところでゴールが見えてきたような気がしています。(ボツになってまた考え直すパターンもあるけど)


最近世間ではプログラミングを始める人が多くなっていますが、すぐにあきらめる人も多いという話です。

泥沼を進んでいると、まぁ、これじゃあ無理もないわな、と思います。

すごく難しく、先が見えず、苦しいですから。

知恵袋を見ていると簡単にスイスイ進められると思っている初心者の方が多いみたいです。


その点についてどうすれば解決できるかというと、それはやはり

>泥沼とはいえプログラミングには違いないのでそれを 楽しみつつ ! 進めば、かならず道は拓ける(ひらける)

だと思います。

プログラミングは何が楽しいのかというと、

  • 自分の考え、アイデアを形にできる

だと思います。


そのためには、「教える」というコンテンツは世の中にたくさん必要だし、それが丁寧で分かりやすいことも必要です。

丁寧に教えられることで「基礎」を固めることができ、基礎が揃っていることで自分の考えやアイデアを形にする「応用」へとつながります。


また、他人と比べないということも必要です。他人のすごさに委縮してしまうと、そこで諦めてしまいます。

私が昔、小中学生のころにプログラミングを始めて楽しんでいた時は、教室でプログラミングをしているのは1~2人くらい、知っている大人では0人、という状況で他人と比べる機会はまったくありませんでした。

ところが現在では教室の全員が義務教育としてプログラミングを学んでいるし、大人もプログラミングを始める人が多くいます。

誰が優れていて誰が劣っているか、そんな状況に襲われ、本来楽しめるものが緊張してしまい、純粋に楽しめなくなっているかもしれません。

良い意味での「自分だけの世界」を作り、その世界を大切にしながら楽しんで、知識を育む必要があると思います。

2025年2月23日

RPG開発 アングロ・サクソンの時代とは?

このページの最初の方にあるリンクに「RPG のルーツ」というものがあり、その中の樹形図の一番 根もとで、"アングロサクソン古伝承" と書いてあります。


▼最初の方にあるリンクに「RPG のルーツ」
▼ルーツをあらわす樹形図の一番根もと

この「アングロ・サクソン」とはどういう時代なのか疑問に思い、少し調べてみました。

アングロ・サクソンの生活

まず、アングロ・サクソンの時代とは、その生活様式と言いますか『生活のレベル』は日本で言うとどの時代の生活に対応するのかと、ChatGPT や Google Gemini に聞いたところ、おおむね、大和時代や飛鳥時代に対応するのだそうです。


※ イギリスの歴史ってよく分からないので映画を少し入れてみました。
「ベン・ハー」はローマ支配下のイスラエルが舞台、
「ジャンヌ・ダルク」はイギリスと戦うフランスが舞台、
「インタビュー・ウィズ・バンパイア」はアメリカ~パリが舞台。
これらはイギリスとあまり関係ありませんが、雰囲気が分かればと思います。


AI に頼んで、それぞれの生活様式を画像でもらいました。

▼"アングロ・サクソンの時代の人々の生活が分かるような一場面を描写した絵または写真が欲しいです。"
▼"大和時代(=古墳時代)の人々の生活が分かるような一場面を描写した絵または写真が欲しいです。 "

まぁ、確かに似ていますね。農業やっているとか、家がわらぶきだとか。

(アングロ・サクソンのほうは「なんでそこで船を作っているのか」と AI に突っ込みたいですが)

大切なのは左の絵のような生活の中で語られた神々や怪物などが伝承として現代に伝わり、「指輪物語」に影響を与え、それが現代のファンタジー、そして RPG の原点である「D&D」(ダンジョンズ&ドラゴンズ)へとつながったということです。

神々の話はこういう生活の中で語られていたんですねぇ。


ヨーロッパのゲルマン神話、北欧神話で語られているものは、

  • エルフ(小さな妖精としての)
  • ドワーフ(木こり、妖精としての)
  • ドラゴン
  • トロール

などです。他にもいっぱいあります。


日本では大和時代、飛鳥時代のときに語られた伝承としては、712 年の『古事記』において、

  • イザナギ、イザナミ
  • スサノオ
  • アマテラス
  • ヤマタノオロチ

などなどの話があります。

イザナギ、イザナミ、スサノオ、アマテラスは家族だそうで、ヤマタノオロチはスサノオが倒したそうです。


当時の人々は現代ほど何も知らなくて、自然に囲まれていたので、神々や怪物などの存在を信じることができ、生き生きと描くことができたのだと思います。

渡来による2つの神話の融合

アングロ・サクソン人の起源は原始時代のゲルマン民族(=ゲルマン人)だそうです。

ゲルマン人が居住していた地域は、

ヨーロッパの北部に居住していたそうです。


その地域の中で特に「デンマーク南部」や「北ドイツ周辺」に住んでいた人々がアングロ・サクソン人だそうです。

彼らはイギリス本土(グレートブリテン島)へ渡来しました。

>現在のデンマーク南部や北ドイツ周辺に住んでいたゲルマン人が、グレートブリテン島に渡ってきた。

>かれらは一部の先住民の文化、すなわちケルト系ブリトン人の文化を大きく改変、または排除していた。

>これが英国最初のアングロ・サクソン人の登場であった。

Wikipedia - アングロ・サクソン人 - 簡史


アングロ・サクソン人の人々は『ゲルマン神話』を持っていて、先住民(ブリテン島先住民)のケルト人が持っていた『ケルト神話』と融合し、それで一つの例として「アーサー王伝説」が生まれたとされています。

RPG のルーツとしてその根元に「アングロ・サクソン古伝承」がありますが、その「アングロ・サクソン」とはこのような時代のことを言っているわけです。

大和時代、飛鳥時代ほどの古い時代のことです。

3つの神話と RPG

「指輪物語」の著者の J.R.R. トールキンは、その『アングロ・サクソン古伝承』のほかに『北欧神話』、『ケルト神話』からも影響を受けています。

北欧神話、ケルト神話とは、

(北欧神話は、)

>北欧神話は、キリスト教化される前のノルド人(ノース人)の信仰に基づく神話。

>スカンディナビア神話とも呼ばれている。

>ゲルマン神話の一種で、ノルウェースウェーデンデンマークアイスランドおよびフェロー諸島に伝わっていたものの総称。

Wikipedia - 北欧神話

(ケルト神話は、)

>・ゲール語 *1 に翻訳された神話。アイルランド神話とスコットランド神話に代表される。

>・ブリソン諸語 *2 の神話。ウェールズ神話に代表される。

Wikipedia - ケルト神話

*1 「ゲール語」はブリテン島の向かって左上の地域(アイルランド、スコットランド)

*2 「ブリソン諸語」はブリテン島の向かって右下の地域(ウェールズ他)で話された言語です。



ゲルマン神話、北欧神話、ケルト神話の関係を図にしてみると…

※ 私はこの辺の文学の専門家ではないので、もしかしたら図は間違っているかもしれません。


「指輪物語」の著者の J.R.R. トールキンは文献学者、作家であり、これらだいたいすべてから影響を受けていたそうです。

初期のファンタジーPRG のモトになったヨーロッパの神話は複雑だった、というお話でした。